1. Field of the Invention
Embodiments of the invention generally relate to computer processing. More specifically, embodiments of the invention are directed to reducing instability of a job of a heterogeneous stream processing application.
2. Description of the Related Art
Distributed computing systems, such as grid computing and computer clusters, are useful tools for breaking down large computing tasks, or jobs, into many smaller tasks that execute concurrently. Used in this manner, distributed systems are highly effective tools to perform large computing tasks in a minimal amount of time.
Distributed systems typically contain a large number of heterogeneous computing systems each providing one or more compute nodes or processors able to perform computing tasks independently from one another. High-speed data communication networks are used to coordinate computing activity, such as inter-node messaging. Because the heterogeneous systems have different hardware architectures, each provides different advantages in executing different types of software. For example, systems with large memories provide good architectures for running database applications.
In some situations, systems with a number of specialized processors are used for stream processing applications, meaning processing of a flow of information. For example, the System S stream processing framework available from IBM is designed to run in a heterogeneous hardware environment, taking advantage of x86, Cell, Blue Gene, or even Power-based servers. In particular, systems based on the Cell processor available from IBM appear to be a well-suited for these types of applications because of that processor's natural abilities as a stream computing platform. Suitable platforms can range from a single CPU up to 10,000 servers.
As the amount of data available to enterprises and other organizations dramatically increases, more and more companies are looking to turn this data into actionable information and knowledge. Addressing these requirements requires systems and applications that enable efficient extraction of knowledge and information from potentially enormous volumes and varieties of continuous data streams. Stream processing provides an execution platform for user-developed applications that ingest, filter, analyze, and correlate potentially massive volumes of continuous data streams. It supports the composition of new applications in the form of stream processing graphs that can be created on the fly, mapped to a variety of hardware configurations, and adapted as requests come and go and relative priorities shift.